#include<bits/stdc++.h>
using namespace std;

bool f=false;
set<int> res;
int n,m,r1,r2,r3,p1,p2,p3;

bool cmp(const int& a,const int& b){
    return a>b;
}

bool check(set<int>& st,vector<string>& ss){
    vector<int> nums;
    for(int i=0;i<m;i++){
        int t=0;
        for(int j=0;j<n;j++){
            if(!st.count(j)&&ss[i][j]=='1')t++;
        }
        nums.push_back(t);
    }
    sort(nums.begin(),nums.end(),cmp);
    if(nums[r1-1]==p1&&nums[r2-1]==p2&&nums[r3-1]==p3)return true;
    return false;
}

void dfs(vector<string>& ss,set<int>& st,int place){
    if(n-st.size()<10) return;
    if(n-st.size()>=10&&n-st.size()<=13){
        if(check(st,ss)){
            res=st;
            cout<<n-res.size()<<'\n';
            for(int i=0;i<n;i++){
                if(!res.count(i))cout<<i+1<<' ';
            }
            exit(0);
        }
    }
    for(int i=place;i<n;i++){
        st.insert(i);
        dfs(ss,st,i+1);
        st.erase(i);
    }
}

int main(){
    ios::sync_with_stdio(0);
    cin.tie(0),cout.tie(0);
    cin>>n>>m;
    vector<string> ss(m);
    vector<int> nums(20,0);
    for(int i=0;i<m;i++){
        cin>>ss[i];
        for(int j=0;j<n;j++){
            if(ss[i][j]=='1')nums[i]++;
        }
    }
    cin>>r1>>r2>>r3>>p1>>p2>>p3;
    vector<int> st(20,0);
    dfs(ss,st,0);
    cout<<-1;
    return 0;
}